
import { userInfoApi, userRightsApi } from "../../apis/userApi";
import { SET_MENU_LIST, SET_TOKEN, SET_USER_INFO } from "../types";

// 应该是用户登录一定要成功以后，才能赋值token，并且只有赋值token以后，才能发起另外其它数据接口的请求
// 所以token设置一定不是异步的，那么用户信息和用户权限应该是异步的，为什么？
// 因为用户登录进来，首页一定是可见的，其它权限不需要那么及时获取，可以在页面跳转以后获取都可以的
function getTokenAct(token) {
    return {type: SET_TOKEN, token}
}

// 应该把用户基本信息和用户权限信息全部获取，因为用户权限信息要依赖用户信息
function getUserInfoAct(id) {
    // 异步action一定是返回一个函数，这个函数会有一个dispatch方法的形参
    return async function(dispatch) {
        let userInfo = await userInfoApi(id)

        if (userInfo.code === 200) {
            // let userRole = await userRightsApi({ids: userInfo.data.role})
            let userRole = await userRightsApi(userInfo.data.role)
            if (userRole.code === 200) {
                dispatch({type: SET_USER_INFO, userInfo: userInfo.data, userRight: userRole.data})
            } else {
                dispatch({type: SET_USER_INFO, userInfo: userInfo.data, userRight: []})
            }
        } else {
            dispatch({type: SET_USER_INFO, userInfo: {}, userRight: []})
        }
    }
}

function getMenuAct(menuList) {
    return {type: SET_MENU_LIST, menuList}
}

export {
    getTokenAct,
    getUserInfoAct,
    getMenuAct
}